@@ -0,0 +1,19 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +from __future__ import unicode_literals  | 
            |
| 3 | 
                +  | 
            |
| 4 | 
                +from django.db import models, migrations  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +  | 
            |
| 7 | 
                +class Migration(migrations.Migration):  | 
            |
| 8 | 
                +  | 
            |
| 9 | 
                + dependencies = [  | 
            |
| 10 | 
                +        ('message', '0006_systemmessageinfo_src'),
               | 
            |
| 11 | 
                + ]  | 
            |
| 12 | 
                +  | 
            |
| 13 | 
                + operations = [  | 
            |
| 14 | 
                + migrations.AlterField(  | 
            |
| 15 | 
                + model_name='systemmessageinfo',  | 
            |
| 16 | 
                + name='src',  | 
            |
| 17 | 
                + field=models.IntegerField(default=0, help_text='\u7cfb\u7edf\u6d88\u606f\u7c7b\u522b', db_index=True, verbose_name='src', choices=[(0, '\u62cd\u7231\u7528\u6237\u7aef'), (1, '\u62cd\u7231\u6444\u5f71\u5e08\u7aef')]),  | 
            |
| 18 | 
                + ),  | 
            |
| 19 | 
                + ]  | 
            
                @@ -88,7 +88,7 @@ class SystemMessageInfo(CreateUpdateMixin):  | 
            ||
| 88 | 88 | 
                title = models.CharField(_(u'title'), max_length=255, help_text=u'系统消息标题')  | 
            
| 89 | 89 | 
                content = models.TextField(_(u'content'), blank=True, null=True, help_text=u'系统消息内容')  | 
            
| 90 | 90 | 
                url = models.CharField(_(u'url'), max_length=255, blank=True, null=True, help_text=u'系统消息链接')  | 
            
| 91 | 
                - src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'系统消息类别')  | 
            |
| 91 | 
                + src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'系统消息类别', db_index=True)  | 
            |
| 92 | 92 | 
                 | 
            
| 93 | 93 | 
                class Meta:  | 
            
| 94 | 94 | 
                         verbose_name = _('systemmessageinfo')
               | 
            
                @@ -11,27 +11,30 @@ from utils.redis.rversion import delete_guest_entrance_control, set_guest_entran  | 
            ||
| 11 | 11 | 
                 | 
            
| 12 | 12 | 
                 | 
            
| 13 | 13 | 
                class LatestAppInfoAdmin(admin.ModelAdmin):  | 
            
| 14 | 
                -    list_display = ('latest_adr_version_code', 'latest_adr_version_name', 'latest_adr_app', 'latest_adr_url', 'latest_ios_version_code', 'latest_ios_version_name', 'latest_ios_url', 'status', 'created_at', 'updated_at')
               | 
            |
| 14 | 
                +    list_display = ('latest_adr_version_code', 'latest_adr_version_name', 'latest_adr_app', 'latest_adr_url', 'latest_ios_version_code', 'latest_ios_version_name', 'latest_ios_url', 'src', 'status', 'created_at', 'updated_at')
               | 
            |
| 15 | 
                +    list_filter = ('src', 'status')
               | 
            |
| 15 | 16 | 
                 | 
            
| 16 | 17 | 
                def save_model(self, request, obj, form, change):  | 
            
| 17 | 18 | 
                obj.save()  | 
            
| 18 | 19 | 
                 | 
            
| 19 | 
                - # 更新安卓下载页面  | 
            |
| 20 | 
                -        write_to_disk(render_to_string('page/download.tmpl.html', {
               | 
            |
| 21 | 
                - 'version': obj.latest_adr_version_name,  | 
            |
| 22 | 
                - }), settings.DOWNLOAD_ADR_PAGE_PATH)  | 
            |
| 20 | 
                + if obj.src == LatestAppInfo.PAIAI_USER:  | 
            |
| 21 | 
                + # 更新安卓下载页面  | 
            |
| 22 | 
                +            write_to_disk(render_to_string('page/download.tmpl.html', {
               | 
            |
| 23 | 
                + 'version': obj.latest_adr_version_name,  | 
            |
| 24 | 
                + }), settings.DOWNLOAD_ADR_PAGE_PATH)  | 
            |
| 23 | 25 | 
                 | 
            
| 24 | 
                - # 更新 iOS 下载页面  | 
            |
| 25 | 
                -        write_to_disk(render_to_string('page/download.tmpl.html', {
               | 
            |
| 26 | 
                - 'version': obj.latest_ios_version_name,  | 
            |
| 27 | 
                - }), settings.DOWNLOAD_IOS_PAGE_PATH)  | 
            |
| 26 | 
                + # 更新 iOS 下载页面  | 
            |
| 27 | 
                +            write_to_disk(render_to_string('page/download.tmpl.html', {
               | 
            |
| 28 | 
                + 'version': obj.latest_ios_version_name,  | 
            |
| 29 | 
                + }), settings.DOWNLOAD_IOS_PAGE_PATH)  | 
            |
| 28 | 30 | 
                 | 
            
| 29 | 31 | 
                # 设置最新 APP 信息  | 
            
| 30 | 
                - set_latest_app()  | 
            |
| 32 | 
                + set_latest_app(obj.src)  | 
            |
| 31 | 33 | 
                 | 
            
| 32 | 34 | 
                 | 
            
| 33 | 35 | 
                class SplashInfoAdmin(admin.ModelAdmin):  | 
            
| 34 | 
                -    list_display = ('splash_image', 'spalash_image_airtime', 'spalash_image_deadline', 'status', 'created_at', 'updated_at')
               | 
            |
| 36 | 
                +    list_display = ('splash_image', 'spalash_image_airtime', 'spalash_image_deadline', 'src', 'status', 'created_at', 'updated_at')
               | 
            |
| 37 | 
                +    list_filter = ('src', 'status')
               | 
            |
| 35 | 38 | 
                 | 
            
| 36 | 39 | 
                 | 
            
| 37 | 40 | 
                class FeedbackInfoAdmin(admin.ModelAdmin):  | 
            
                @@ -0,0 +1,29 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +from __future__ import unicode_literals  | 
            |
| 3 | 
                +  | 
            |
| 4 | 
                +from django.db import models, migrations  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +  | 
            |
| 7 | 
                +class Migration(migrations.Migration):  | 
            |
| 8 | 
                +  | 
            |
| 9 | 
                + dependencies = [  | 
            |
| 10 | 
                +        ('operation', '0006_feedbackinfo_src'),
               | 
            |
| 11 | 
                + ]  | 
            |
| 12 | 
                +  | 
            |
| 13 | 
                + operations = [  | 
            |
| 14 | 
                + migrations.AddField(  | 
            |
| 15 | 
                + model_name='latestappinfo',  | 
            |
| 16 | 
                + name='src',  | 
            |
| 17 | 
                + field=models.IntegerField(default=0, help_text='\u6700\u65b0\u7248\u6765\u6e90', db_index=True, verbose_name='src', choices=[(0, '\u62cd\u7231\u7528\u6237\u7aef'), (1, '\u62cd\u7231\u6444\u5f71\u5e08\u7aef')]),  | 
            |
| 18 | 
                + ),  | 
            |
| 19 | 
                + migrations.AddField(  | 
            |
| 20 | 
                + model_name='splashinfo',  | 
            |
| 21 | 
                + name='src',  | 
            |
| 22 | 
                + field=models.IntegerField(default=0, help_text='\u542f\u52a8\u9875\u9762\u6765\u6e90', db_index=True, verbose_name='src', choices=[(0, '\u62cd\u7231\u7528\u6237\u7aef'), (1, '\u62cd\u7231\u6444\u5f71\u5e08\u7aef')]),  | 
            |
| 23 | 
                + ),  | 
            |
| 24 | 
                + migrations.AlterField(  | 
            |
| 25 | 
                + model_name='feedbackinfo',  | 
            |
| 26 | 
                + name='src',  | 
            |
| 27 | 
                + field=models.IntegerField(default=0, help_text='\u7528\u6237\u53cd\u9988\u6765\u6e90', db_index=True, verbose_name='src', choices=[(0, '\u62cd\u7231\u7528\u6237\u7aef'), (1, '\u62cd\u7231\u6444\u5f71\u5e08\u7aef')]),  | 
            |
| 28 | 
                + ),  | 
            |
| 29 | 
                + ]  | 
            
                @@ -23,6 +23,14 @@ def upload_path(instance, old_filename):  | 
            ||
| 23 | 23 | 
                 | 
            
| 24 | 24 | 
                 | 
            
| 25 | 25 | 
                class LatestAppInfo(CreateUpdateMixin):  | 
            
| 26 | 
                + PAIAI_USER = 0  | 
            |
| 27 | 
                + PAIAI_LENSMAN = 1  | 
            |
| 28 | 
                +  | 
            |
| 29 | 
                + SRC = (  | 
            |
| 30 | 
                + (PAIAI_USER, u'拍爱用户端'),  | 
            |
| 31 | 
                + (PAIAI_LENSMAN, u'拍爱摄影师端'),  | 
            |
| 32 | 
                + )  | 
            |
| 33 | 
                +  | 
            |
| 26 | 34 | 
                latest_adr_version_code = models.IntegerField(_(u'latest_adr_version_code'), default=0, help_text=u'最新安卓版本号')  | 
            
| 27 | 35 | 
                latest_adr_version_name = models.CharField(_(u'latest_adr_version_name'), max_length=255, blank=True, null=True, help_text=u'最新安卓版本名')  | 
            
| 28 | 36 | 
                latest_adr_app = models.FileField(_(u'latest_adr_app'), upload_to=upload_path, blank=True, null=True, help_text=u'最新版安卓 APP')  | 
            
                @@ -32,6 +40,8 @@ class LatestAppInfo(CreateUpdateMixin):  | 
            ||
| 32 | 40 | 
                latest_ios_version_name = models.CharField(_(u'latest_ios_version_name'), max_length=255, blank=True, null=True, help_text=u'最新 iOS 版本名')  | 
            
| 33 | 41 | 
                latest_ios_url = models.URLField(_(u'latest_ios_url'), max_length=255, blank=True, null=True, help_text=u'最新版 iOS 链接')  | 
            
| 34 | 42 | 
                 | 
            
| 43 | 
                + src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'最新版来源', db_index=True)  | 
            |
| 44 | 
                +  | 
            |
| 35 | 45 | 
                class Meta:  | 
            
| 36 | 46 | 
                         verbose_name = _('latestappinfo')
               | 
            
| 37 | 47 | 
                         verbose_name_plural = _('latestappinfo')
               | 
            
                @@ -56,9 +66,18 @@ class LatestAppInfo(CreateUpdateMixin):  | 
            ||
| 56 | 66 | 
                 | 
            
| 57 | 67 | 
                 | 
            
| 58 | 68 | 
                class SplashInfo(CreateUpdateMixin):  | 
            
| 69 | 
                + PAIAI_USER = 0  | 
            |
| 70 | 
                + PAIAI_LENSMAN = 1  | 
            |
| 71 | 
                +  | 
            |
| 72 | 
                + SRC = (  | 
            |
| 73 | 
                + (PAIAI_USER, u'拍爱用户端'),  | 
            |
| 74 | 
                + (PAIAI_LENSMAN, u'拍爱摄影师端'),  | 
            |
| 75 | 
                + )  | 
            |
| 76 | 
                +  | 
            |
| 59 | 77 | 
                splash_image = models.ImageField(_(u'splash_image'), upload_to=upload_path, blank=True, null=True, help_text=u'启动页面图片')  | 
            
| 60 | 78 | 
                spalash_image_airtime = models.DateTimeField(_(u'spalash_image_airtime'), blank=True, null=True, help_text=u'启动页面图片开始日期')  | 
            
| 61 | 79 | 
                spalash_image_deadline = models.DateTimeField(_(u'spalash_image_deadline'), blank=True, null=True, help_text=u'启动页面图片截止日期')  | 
            
| 80 | 
                + src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'启动页面来源', db_index=True)  | 
            |
| 62 | 81 | 
                 | 
            
| 63 | 82 | 
                class Meta:  | 
            
| 64 | 83 | 
                         verbose_name = _('splashinfo')
               | 
            
                @@ -91,7 +110,7 @@ class FeedbackInfo(CreateUpdateMixin):  | 
            ||
| 91 | 110 | 
                 | 
            
| 92 | 111 | 
                user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识')  | 
            
| 93 | 112 | 
                feedback = models.TextField(_(u'feedback'), blank=True, null=True, help_text=u'用户反馈')  | 
            
| 94 | 
                - src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'用户反馈来源')  | 
            |
| 113 | 
                + src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'用户反馈来源', db_index=True)  | 
            |
| 95 | 114 | 
                 | 
            
| 96 | 115 | 
                class Meta:  | 
            
| 97 | 116 | 
                         verbose_name = _('feedbackinfo')
               | 
            
                @@ -18,7 +18,9 @@ def upgrade_api(request):  | 
            ||
| 18 | 18 | 
                :param request:  | 
            
| 19 | 19 | 
                :return:  | 
            
| 20 | 20 | 
                """  | 
            
| 21 | 
                - latest_app = get_latest_app()  | 
            |
| 21 | 
                +    src = int(request.POST.get('src', 0))
               | 
            |
| 22 | 
                +  | 
            |
| 23 | 
                + latest_app = get_latest_app(src)  | 
            |
| 22 | 24 | 
                 | 
            
| 23 | 25 | 
                if request.iOS:  | 
            
| 24 | 26 | 
                         appinfo = {
               | 
            
                @@ -45,7 +47,9 @@ def splash_api(request):  | 
            ||
| 45 | 47 | 
                :param request:  | 
            
| 46 | 48 | 
                :return:  | 
            
| 47 | 49 | 
                """  | 
            
| 48 | 
                - splashes = SplashInfo.objects.all()  | 
            |
| 50 | 
                +    src = int(request.POST.get('src', 0))
               | 
            |
| 51 | 
                +  | 
            |
| 52 | 
                + splashes = SplashInfo.objects.filter(src=src, status=True)  | 
            |
| 49 | 53 | 
                splashes = [splash.data for splash in splashes]  | 
            
| 50 | 54 | 
                 | 
            
| 51 | 55 | 
                     return response(200, 'Get Splash Success', u'获取最新版信息成功', {
               | 
            
                @@ -14,16 +14,16 @@ r = settings.REDIS_CACHE  | 
            ||
| 14 | 14 | 
                # 最新 APP 相关  | 
            
| 15 | 15 | 
                 | 
            
| 16 | 16 | 
                 | 
            
| 17 | 
                -def set_latest_app():  | 
            |
| 17 | 
                +def set_latest_app(src=0):  | 
            |
| 18 | 18 | 
                """ 设置最新 APP 信息 """  | 
            
| 19 | 19 | 
                try:  | 
            
| 20 | 
                - appinfo = LatestAppInfo.objects.all()[0].data  | 
            |
| 20 | 
                + appinfo = LatestAppInfo.objects.filter(src=src)[0].data  | 
            |
| 21 | 21 | 
                except IndexError:  | 
            
| 22 | 22 | 
                         appinfo = {}
               | 
            
| 23 | 
                - r.set(LATEST_APP_INFO, json.dumps(appinfo))  | 
            |
| 23 | 
                + r.set(LATEST_APP_INFO % src, json.dumps(appinfo))  | 
            |
| 24 | 24 | 
                return appinfo  | 
            
| 25 | 25 | 
                 | 
            
| 26 | 26 | 
                 | 
            
| 27 | 
                -def get_latest_app():  | 
            |
| 27 | 
                +def get_latest_app(src=0):  | 
            |
| 28 | 28 | 
                """ 获取最新 APP 信息 """  | 
            
| 29 | 
                -    return json.loads(r.get(LATEST_APP_INFO) or '{}') or set_latest_app()
               | 
            |
| 29 | 
                +    return json.loads(r.get(LATEST_APP_INFO % src) or '{}') or set_latest_app(src)
               | 
            
                @@ -48,4 +48,4 @@ SYSTEM_MESSAGE_DELETED_INFO = 'system:message:deleted:info:%s' # STRING,系  | 
            ||
| 48 | 48 | 
                GUEST_ENTRANCE_CONTROL_INFO = 'guest:entrance:control:info' # STRING,游客入口控制信息  | 
            
| 49 | 49 | 
                 | 
            
| 50 | 50 | 
                # APP 相关  | 
            
| 51 | 
                -LATEST_APP_INFO = 'latest:app:info' # STRING,最新 APP 信息  | 
            |
| 51 | 
                +LATEST_APP_INFO = 'latest:app:info:%s' # STRING,最新 APP 信息,src  |